package text;

import com.sun.org.apache.bcel.internal.generic.RET;

public class text3 {
}
class ListNode {
     int val;
     ListNode next;
     ListNode() {}
     ListNode(int val) { this.val = val; }
     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 }
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode l3 = l2;
        ListNode l4 = l1;
        int o = 0, p = 0;
        ListNode l6=new ListNode();
        ListNode l5=l6;
        int[] a = new int[100];
        int[] b = new int[100];
        int x = 0;
        for (; l3 != null; l3 = l3.next) {
            a[x] = l3.val;
            x++;
        }
        o = x;
        x = 0;
        for (; l4 != null; l4 = l4.next) {
            b[x] = l4.val;
            x++;
        }
        p = x;
        if (o > p) {
            for (int u = 0; u < o; u++) {
                if (u < p) {
                    a[u] = a[u] + b[u];
                    if (a[u] >= 10) {
                        a[u] = a[u] - 10;
                        if (u + 1 == o) {
                            a[u + 1] = 1;
                            o++;
                            break;
                        } else {
                            a[u + 1]++;
                        }
                    }
                } else {
                    if (a[u] >= 10) {
                        a[u] = a[u] - 10;
                        if (u + 1 == o) {
                            a[u + 1] = 1;
                            o++;
                            break;
                        } else {
                            a[u + 1]++;
                        }
                    }
                }
            }
            for(int i=0;i<o;i++){
                if(i==0){
                    l5.val=a[i];
                }
                else{
                    l5.next=new ListNode();
                    l5=l5.next;
                    l5.val=a[i];
                }
            }
        } else {
            for (int u = 0; u < p; u++) {
                if (u < o) {
                    b[u] = a[u] + b[u];
                    if (b[u] >= 10) {
                        b[u] = b[u] - 10;
                        if (u + 1 == p) {
                            b[u + 1] = 1;
                            p = p + 1;
                            break;
                        } else {
                            b[u + 1]++;
                        }
                    }
                } else {
                    if (b[u] >= 10) {
                        b[u] = b[u] - 10;
                        if (u + 1 == p) {
                            b[u + 1] = 1;
                            p = p + 1;
                            break;
                        } else {
                            b[u + 1]++;
                        }
                    }
                }
            }
            for(int i=0;i<p;i++){
                if(i==0){
                    l5.val=b[i];
                }
                else{
                    l5.next=new ListNode();
                    l5=l5.next;
                    l5.val=b[i];
                }
            }
        }
        return l6;
    }
}

